package com.hxzy.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hxzy.common.core.domain.entity.SysDept;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface SysDeptMapper extends BaseMapper<SysDept> {

    /**
     * 部门信息
     * @param dept
     * @return
     */
    List<SysDept> selectDeptList (SysDept dept);

    /**
     * 查询部门唯一性
     * @param deptName
     * @param parentId
     * @return
     */
    SysDept checkDeptNameUnique (@Param(value = "deptName") String deptName, @Param(value = "parentId") Long parentId);

    /**
     * 根据部门id查询信息
     * @param deptId
     * @return
     */
    SysDept selectDeptById (@Param(value = "deptId") Long deptId);

    /**
     * 部门信息新增
     * @param sysDept
     * @return
     */
    int insertDept (@Param(value = "dept")SysDept sysDept);

    /**
     * 修改部门信息
     * @param sysDept
     * @return
     */
    int updateDept (SysDept sysDept);


    /**
     * 根据id查询所有子节点
     * @param deptId
     */
    List<SysDept> selectChildrenDeptById (Long deptId);

    /**
     * 修改子元素关系
     * @param sysDepts
     */
    int updateDeptChildren (@Param("depts")List<SysDept> sysDepts);

    /**
     * 修改所在部门正常状态
     * @param deptIds
     */
    void updateDeptStatusNormal (Long[] deptIds);

    /**
     * 判断是否有子级部门
     * @param deptId
     * @return
     */
    int hasChildByDeptId (Long deptId);

    /**
     * 查询当前部门是否存在账户
     * @param deptId
     * @return
     */
    int checkDeptExistUser (Long deptId);

    /**
     * 删除部门  修改del_flag列   2代表删除
     * @param deptId
     * @return
     */
    int deleteDeptById (Long deptId);



}
